Drew Weber Muze Lua Scripts — Version 1
Welcome! These REAPER Lua scripts were put together to make working with the NuSpace Audio Muze binaural plugin easier, especially for keyboard and screen-reader users. Whether you're placing a sound in one spot, building movement across a clip, or routing audio into multiple spatial tracks, I hope these tools make the creative part more fun.
Thanks for checking them out, and happy mixing!
What you'll need
- REAPER 7 or newer, with its built-in Lua ReaScript support. Visit the official REAPER website to download or purchase REAPER.
- The NuSpace Audio Muze plugin installed as a track FX. You can download the Muze demo or purchase the full plugin from the official NuSpace Audio Muze page. Muze is a separate product and is not included with these scripts.
- A keyboard or screen reader if that's how you work. The parameter selector uses REAPER's native file-open dialog rather than a custom graphical interface.
- Optional: js_ReaScriptAPI, a separately installed REAPER extension (it does not ship with REAPER). Get js_ReaScriptAPI from its official GitHub project; the project recommends installing it through ReaPack. It provides a Save As dialog when recording presets. Without it, the recorder offers a text box where you can enter a full file path.
These scripts were developed around a particular Muze parameter layout. If you have a different plugin version, check compatibility before using them in an important project.
Installation
- Extract the ZIP to a convenient folder. Keep the
Muze_Parametersfolder alongside the Lua scripts; do not separate it fromMuze_Select_Parameter.lua. - In REAPER, open the Actions list.
- Choose the option to load a ReaScript, and add the
.luascripts you want to use. - Bind the scripts to keyboard shortcuts: in REAPER's Actions list, select a loaded script, choose Add in the Shortcuts for selected action section, and press the key combination you want to use. Repeat for the scripts you plan to run regularly, especially Prepare, Write, Select Parameter, Increase, Decrease, Record Preset, and Load Preset. The scripts do not assign shortcuts automatically.
- Save a backup of your project before experimenting with automation or routing.
Important: The seven .muzeselect files are supporting selection files, not scripts to import into the Actions list.
Control Muze parameters from the keyboard
These three scripts work together:
Muze_Select_Parameter.luaopens a native file dialog containing seven named parameter choices. Choose a file and press Enter.Muze_Increase_Selected_Parameter.luaincreases the selected parameter.Muze_Decrease_Selected_Parameter.luadecreases the selected parameter.
The available choices are Source 1 Azimuth, Orientation Turn Rate, Source 1 Distance, Source 1 Elevation, Swap Turn Axis, Orientation Yaw, and Gain. The increase/decrease scripts adjust continuous parameters in approximately 1% normalized steps. For Swap Turn Axis, either adjustment script toggles the setting.
Select the track containing exactly one Muze FX before using the adjustment scripts. The chosen parameter is remembered for later use. No PowerShell or background helper is required.
Set a fixed Muze position on an item
- Put one Muze instance on the track and select the media item whose duration you want to control.
- Run
Muze_Prepare_Selected_Item_For_Editing.lua. This temporarily suspends Muze's parameter automation so you can adjust settings manually. - Set your desired Muze position.
- Run
Muze_Write_All_Settings_To_Selected_Item.luato write those settings across the selected item's time span and reactivate automation. - Play the project to hear the result.
Remember: Prepare → adjust Muze → Write → playback. Don't run Prepare again after Write unless you intend to edit the position again, because Prepare suspends Muze automation.
The scripts expect exactly one Muze track FX on the selected item's track. They work on track FX, not take FX.
Record and load position presets
Record a preset
- Select an item on the track with Muze.
- Adjust Muze to your first position and run
Muze_Record_Position_Preset.lua. The script captures the current parameter settings. - Change Muze's settings and run the recorder again for each additional position.
- When you're finished, run the recorder once more without changing any Muze setting. This opens the save process.
- Save the resulting
.muzepresetfile. A single captured position makes a fixed preset; multiple positions make a movement preset.
The recorder captures positions, not the timing between keypresses. It doesn't write automation while recording.
Load a preset
- Select the item that should receive the preset.
- Run
Muze_Load_Position_Preset.lua. - Browse to a
.muzepresetfile and open it. - The loader writes the preset's positions across the selected item's duration, with evenly spaced positions and linear transitions between them. A one-position preset holds a fixed setting.
- Play the item. Automation is already active; don't run Prepare before listening.
Where are presets saved? By default, the recorder saves under REAPER's resource directory in Muze Presets, using Fixed and Movement subfolders. The loader initially opens in the folder containing its Lua script. You may need to browse to your saved presets the first time.
If you need to discard an unfinished capture, run Muze_Reset_Position_Recording.lua. It asks for confirmation before discarding the captured positions.
Heads-up: Loading a preset replaces Muze automation points within the selected item's time range. Save your project first if you might want to restore earlier automation.
Send audio to spatial tracks
Split stereo into left and right destinations
Muze_Stereo_Routing.lua takes the selected source track and routes its left and right channels separately to the next two tracks. Put Muze on those destination tracks to place each channel independently. The script disables the source track's direct master/parent send so the original doesn't play twice.
Send stereo to several destination tracks
Muze_Route_Stereo_To_Multiple_Tracks.lua routes the selected source track's stereo output to a number of following tracks you choose. Each destination receives the stereo signal. The source's direct master/parent send is disabled; existing unrelated sends are left alone.
Both routing scripts require destination tracks to exist below the source track. Review your routing after running them, especially in projects that already have sends or folder routing.
A few friendly tips
- Start with a short test item so you can learn the workflow without risking a larger project.
- When using multiple Muze tracks, solo one at a time to position it, then listen to the complete mix.
- For adjacent items sharing one Muze track, apply movement presets in chronological order.
- To capture the combined result of source tracks and their spatial FX returns, render the master mix.
- Keep copies of your favorite
.muzepresetfiles and REAPER projects.
Included scripts
Muze_Prepare_Selected_Item_For_Editing.luaMuze_Write_All_Settings_To_Selected_Item.luaMuze_Record_Position_Preset.luaMuze_Load_Position_Preset.luaMuze_Reset_Position_Recording.luaMuze_Select_Parameter.luaMuze_Increase_Selected_Parameter.luaMuze_Decrease_Selected_Parameter.luaMuze_Stereo_Routing.luaMuze_Route_Stereo_To_Multiple_Tracks.lua
Also included: the Muze_Parameters folder containing seven .muzeselect selection files.
Compatibility and a final note
These scripts were created and tested for a personal REAPER/Muze workflow. Other REAPER versions, Muze builds, operating systems, routing layouts, or accessibility setups may behave differently. They are provided as-is; back up your work and test before relying on them.
These are independent user-created scripts, not official REAPER or NuSpace Audio software.
Most of all, have fun. The whole point is to spend less time fighting controls and more time making sound move!